package cn.tedu.knows.portal.controller;


import cn.tedu.knows.portal.model.User;
import cn.tedu.knows.portal.service.IUserService;
import cn.tedu.knows.portal.vo.UserVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author tedu.cn
 * @since 2021-11-26
 */
@RestController
@RequestMapping("/v1/users")
public class UserController {
   /* // 类上编写@RequestMapping表示
    // 访问当控制器类中的任何方法都要以编写的路径开头

    // @GetMapping表示处理get请求的控制器方法,后面也可以规定访问它的路径
    // 要想访问这个方法最终路径为:localhost:8080/v1/users/demo
    @GetMapping("/demo")
    public String demo() {
        return "hello demo";
    }

    @GetMapping("/list")
    // 一般方法都是登录只能就能随意访问
    // 下面方法规定了必须具有test资格才能访问
    @PreAuthorize("hasAuthority('test')")
    public String list() {
        return "显示所有用户信息";
    }
    @GetMapping("/one")
    @PreAuthorize("hasAnyAuthority('one')")
    public String one(){
        return "获得系统信息";
    }*/
    @Autowired
    private IUserService userService;
    @GetMapping("/master")
    public List<User> teachers(){
        //调用业务逻辑层方法返回所有讲师
        List<User> users=userService.getTeachers();
        return users;
    }
    @GetMapping("/me")
    public UserVO me(@AuthenticationPrincipal UserDetails user){
        UserVO userVO=userService.getUserVO(user.getUsername());
        return userVO;
    }
}
